package com.carter.springframework.beans.factory;

import com.carter.springframework.beans.exception.BeanException;
import com.carter.springframework.beans.factory.config.AutowireCapableBeanFactory;
import com.carter.springframework.beans.factory.config.BeanDefinition;
import com.carter.springframework.beans.factory.config.ConfigurableBeanFactory;

public interface ConfigurableListableBeanFactory extends ListableBeanFactory, AutowireCapableBeanFactory, ConfigurableBeanFactory {
    /**
     * 获取BeanDefinition
     * @param beanName
     * @return
     * @throws BeanException
     */
    BeanDefinition getBeanDefinition(String beanName) throws BeanException;

    /**
     * 提前实例化单例bean对象
     * @throws BeanException
     */
    void preInstantiateSingletons() throws BeanException;

    ClassLoader getBeanClassLoader();
}
